home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / consoledevice.lha / rawkeys.s < prev   
Encoding:
Text File  |  1993-08-31  |  3.1 KB  |  178 lines

  1.  
  2.     Section     ConsoleDevice,code
  3.     opt    o+,d+,w-
  4.     
  5.     include    system
  6.  
  7.     *-----------------------------------------------------------*
  8.  
  9. Start:    Lea    IntName,A1
  10.     Moveq    #0,D0
  11.     CALLEXEC    OpenLibrary
  12.     Move.l    D0,_IntuitionBase
  13.     Beq    Error
  14.  
  15.     *--------------*
  16.  
  17.     move.l    #0,a1
  18.     CALLEXEC    FindTask
  19.  
  20.     lea    Reply_Port,a1
  21.     move.l    d0,MP_SIGTASK(a1)
  22.     CALLEXEC    AddPort
  23.         
  24.     lea    IO_Port,a1
  25.     move.l    #-1,d0
  26.     move.l    #0,d1
  27.     lea    console_dev,a0
  28.     CALLEXEC    OpenDevice
  29.     cmp.l    #0,d0
  30.     bne    Quit2
  31.     
  32.     lea    IO_Port,a0
  33.     move.l    IO_DEVICE(a0),d0
  34.     move.l    d0,ConsoleDevice
  35.  
  36.     *---------------*
  37.  
  38.     Lea    MyWindow,a0
  39.     CALLINT    OpenWindow
  40.     Move.l    D0,_MyWinBase
  41.     Beq    Quit
  42.     
  43.     Move.l    D0,A0
  44.     Move.l    wd_RPort(A0),_MyWinRPort
  45.     Move.l    wd_UserPort(a0),_MyWinUserPort
  46.  
  47.     *-----------------------------------------------*
  48.     
  49. .mainloop    move.l    #0,Ascii
  50.     
  51.     Move.l    _MyWinUserPort,A0
  52.     CALLEXEC    WaitPort
  53.     Move.l    _MyWinUserPort,A0
  54.     CALLEXEC    GetMsg
  55.     
  56.     Move.l    D0,A1
  57.     Move.l    im_Class(A1),D2    ;D2=IDCMP Flags Directly
  58.     Move.w    im_Code(A1),D3    ;D3=Codes ie key class=Rawkey
  59.     Move.w    im_Qualifier(A1),D4    ;D4=things like CTRL SHIFT
  60.     Move.w    im_MouseX(a1),D5    ;D5=MouseX Coordinate
  61.     Move.w    im_MouseY(a1),D6    ;D6=MouseY Coordinate
  62.     Move.l    im_IAddress(A1),D7    ;D7=Addres of Intuition Obj ie Gadget
  63.     
  64.     move.w    d4,OptionKeys
  65.  
  66.     Cmp.l    #RAWKEY,D2
  67.     bne    .next
  68.  
  69.     *---------------------*
  70.  
  71.     Movem.l    D0-D7/A0-A6,-(A7)    
  72.     
  73.     lea    Event,a0
  74.     move.b    #IECLASS_RAWKEY,ie_Class(a0)
  75.     move.w    im_Code(a1),ie_Code(a0)
  76.     move.w    im_Qualifier(a1),ie_Qualifier(a0)
  77.     move.l    im_IAddress,ie_EventAddress(a0)
  78.  
  79.     lea    ConBuff,a1
  80.  
  81.     move.l    #15,d1
  82.     move.l    #0,a2
  83.     move.l    ConsoleDevice,a6
  84.     jsr    -48(a6)
  85.     cmp.l    #0,d0
  86.     beq    .nokey
  87.  
  88.     lea    Ascii,a0
  89.     lea    ConBuff,a1
  90. .copy    move.b    (a1),(a0)+
  91.     move.b    #0,(a1)+
  92.     cmp.b    #0,(a1)
  93.     bne    .copy
  94.     move.b    #0,(a0)+
  95.     move.b    #0,(a0)+
  96.     move.b    #0,(a0)+
  97.     move.b    #0,(a0)+
  98.  
  99.     ;at this point `Ascii' contains ascii code(s) from console device
  100.     ;and `OptionKeys' is stuff like alt, control, shift etc.
  101.         
  102.     move.w    Ascii,$dff180
  103.  
  104. .nokey    Movem.l    (a7)+,D0-D7/A0-A6
  105. .next    Movem.l    D0-D7/A0-A6,-(A7)    
  106.     CALLEXEC    ReplyMsg
  107.     Movem.l    (a7)+,D0-D7/A0-A6
  108.     
  109.     Cmp.l    #CLOSEWINDOW,D2
  110.     bne    .mainloop
  111.  
  112.  
  113.     Move.l    _MyWinBase,A0
  114.     CALLINT    CloseWindow
  115.  
  116.     *-----------------------------*
  117.  
  118. Quit    lea    IO_Port,a1
  119.     CALLEXEC    CloseDevice
  120.  
  121. Quit2    lea    Reply_Port,a1
  122.     CALLEXEC    RemPort
  123.     
  124.     *-----------------------------*
  125.     
  126. CloseInt    Move.l    _IntuitionBase,A1
  127.     CALLEXEC    CloseLibrary
  128.  
  129.     *-----------------------------*
  130.  
  131. Error    Moveq    #0,D0
  132.     Rts
  133.  
  134. *----------------------------------------------------------*
  135.  
  136.     section    testdata,data
  137.  
  138. _MyWinBase        Dc.l    0
  139. _MyWinRPort        Dc.l    0
  140. _MyWinUserPort    Dc.l    0
  141. _MyWinVPort        Dc.l    0
  142.  
  143. _IntuitionBase    Dc.l    0
  144.  
  145. ConBuff:        ds.b    16
  146. Event:        ds.b    16
  147. Ascii:        dc.l    0,0,0,0
  148. OptionKeys:        dc.l    0
  149.  
  150. IO_Port:        dcb.l    20,0
  151. Reply_Port:        dcb.l    8,0
  152. ConsoleDevice:    dc.l    0
  153.  
  154. IntName        INTNAME
  155. console_dev        dc.b    "console.device",0
  156.         even
  157.             
  158. **************************************************
  159.  
  160. MyWindow:    dc.w    0,0    
  161.     dc.w    640,200
  162.     dc.b    0,1    
  163.     dc.l    CLOSEWINDOW+RAWKEY
  164.     dc.l    NOCAREREFRESH+WINDOWCLOSE+WINDOWDRAG+WINDOWDEPTH
  165.     dc.l    0    
  166.     dc.l    0    
  167.     dc.l    MyName
  168.     dc.l    0    
  169.     dc.l    0    
  170.     dc.w    5,5    
  171.     dc.w    -1,-1    
  172.     dc.w    WBENCHSCREEN    
  173.  
  174. MyName:    dc.b    "Console Device is cool as fuck,",0
  175.     even
  176.     
  177. **************************************************
  178.